#include <iostream>
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#include <cstring>
#include <ctime>

using namespace std;

int main() {
    pid_t pid = fork();

    if (pid == -1) {
        cout << "创建进程失败！" << endl;
        return 1;
    }

    if (pid == 0) {  // 子进程
        char* argv[] = {
            (char*)"./child2",
            (char*)"20251109",
            (char*)"Jay",
            nullptr
        };
        execvp(argv[0], argv);
        cerr << "子进程执行失败！" << endl;
        return 1;
    } else {  // 父进程
        cout << "子进程创建成功，PID: " << pid << endl;
        
        // 运行5秒
        cout << "子进程运行5秒..." << endl;
        sleep(5);
        
        // 暂停子进程（发送SIGSTOP信号）
        cout << "暂停子进程3秒..." << endl;
        kill(pid, SIGSTOP);
        sleep(3);
        
        // 恢复子进程（发送SIGCONT信号）
        cout << "恢复子进程运行..." << endl;
        kill(pid, SIGCONT);
        
        // 再运行5秒
        cout << "子进程再运行5秒..." << endl;
        sleep(5);
        
        // 终止子进程
        cout << "终止子进程..." << endl;
        kill(pid, SIGKILL);
        waitpid(pid, nullptr, 0);
    }

    return 0;
}
